package testes.controladoras;

import static org.junit.Assert.*;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Iterator;

import javax.xml.crypto.Data;

import model.*;
import org.junit.*;
import controller.*;

public class TestControladoraLocacao {
	ControladoraLocadora controladoraLocadora = new ControladoraLocadora();
	ControladoraLocacao controladoraLocacao = new ControladoraLocacao();
	Locadora locadora = new Locadora();
	ArrayList<Integer> filmes = new ArrayList<Integer>();
	ArrayList<Integer> testeFilmes = new ArrayList<Integer>();//array vazio para testar o calculo de taxas
	Video v;
	
	@Before
	public void setUp(){
		controladoraLocadora.cadastrarCliente(locadora, new Cliente("Kamilla", 234, "Rua azul", 789, 908, new CartaoAVS(432), 0.0));
		controladoraLocadora.cadastrarVideo(locadora, new Video(1, 4, "Um corpo que cai", "1958", "Drama", 3));
		controladoraLocadora.cadastrarVideo(locadora, new Video(2, 3, "Casablanca", "1942", "Drama", 1));
		controladoraLocadora.cadastrarVideo(locadora, new Video(3, 1, "Cinema Paradiso", "1988", "Comédia", 2));
		
		Iterator<Video> it = locadora.getVideo().iterator();
		while(it.hasNext()){
			v = (Video) it.next();
			filmes.add(v.getNumeroCatalogo());
		}
		
	}

	@Test
	public void testRealizarLocacao() {
		controladoraLocacao.realizarLocacao(locadora, filmes, 432);
		assertEquals(false, locadora.getAluguel().isEmpty());
	}
	
	@Test
	public void testCalcularTaxaLocacao(){
		assertEquals(0.0, controladoraLocacao.calcularTaxaLocacao(testeFilmes), 0);
		assertEquals(6.0, controladoraLocacao.calcularTaxaLocacao(filmes), 0);	
	}
	
	@Test
	public void calcularDataDevolucao(){
		Calendar c = Calendar.getInstance();
		c.add(c.DATE, 3);
		assertEquals(c.getTime().getDay(), controladoraLocacao.calcularDataDevolucao().getDay());
		assertEquals(c.getTime().getMonth(), controladoraLocacao.calcularDataDevolucao().getMonth());
	}

	@Test
	public void verificarVideos(){
		assertEquals(true, controladoraLocacao.verificarVideos(locadora, filmes));
		
		controladoraLocacao.realizarLocacao(locadora, filmes, 123);
		assertEquals(false, controladoraLocacao.verificarVideos(locadora, filmes));
		
	}
	
	@Test
	public void verificarClientes(){
		assertEquals(true, controladoraLocacao.verificarCliente(locadora, 432));
		assertEquals(false, controladoraLocacao.verificarCliente(locadora, 123));
	}

}
